const state = {
    list: [
        {name: "系统管理员",age: 22,sex: "男"},
        {name: "最高管理员",age: 24,sex: "男"},
        {name: "学生管理员",age: 21,sex: "女"},
        {name: "成绩管理员",age: 21,sex: "女"},
    ]
}

const getters = {
    girlList(state) {
        return state.list.filter(v => v.sex == '女')
    },
    // 展示所有人（自己模块，顶层模块，用户模块）
    // 模块中的getters，除了state和getters两个参数外，还有rootState和rootGetters两个参数，通过这个参数，可以访问顶层模块或者其他子模块
    getAll(state,getters,rootState,rootGetters) {
        let arr = [];
        arr.push(...state.list);
        arr.push(...rootState.list)
        arr.push(...rootState.user.list)
        return arr;
    },
    getAllGirls(state,getters,rootState,rootGetters) {
        let arr = [];
        arr.push(...getters.girlList);
        arr.push(...rootGetters.girlList);
        arr.push(...rootGetters["user/girlList"]);
        return arr;
    }
}

const mutations = {
    add(state,payload) {
        state.list.push(payload);
    }
}

const actions = {
    add(context,payload) {
        // 自己调自己的add，没有必要添加命名空间，相当于："admin/add"
        context.commit("add",payload);

        // 调顶层的add，{root: true}表示从顶层模块向下找，结果为："add"
        context.commit("add",payload,{root: true})

        // 调用户模块的add，结果为："user/add"
        context.commit("user/add",payload,{root: true})
    }
}

export default {
    namespaced: true,
    state,
    getters,
    mutations,
    actions
}